<?php
class EquiposOperativosController extends AppController {

	var $name = 'EquiposOperativos';
	var $helpers = array('Access');
	var $uses = array('UsersEquiposOperativo', 'EquiposOperativo');

	function sesion_activa(){
		$usuario_activo=$this->Access->getMy('username');
		//Verificacion de sesion del sistema
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
	}
	
	function index() {
		$this->sesion_activa();
		$this->EquiposOperativo->recursive = 0;
		
		$equiposOperativos = $this->paginate('EquiposOperativo');
		
		foreach( $equiposOperativos as &$eo ){
			$municipo_zona = $this->EquiposOperativo->Zona->read('municipio_id', $eo['EquiposOperativo']['zona_id']);
			$nombreMunicipio = $this->EquiposOperativo->Zona->Municipio->read('nombre', $municipo_zona['Zona']['municipio_id']);
			$eo['nombre_municipio'] = $nombreMunicipio['Municipio']['nombre'];
			unset($eo);
		}
		
		$this->set('equiposOperativos', $equiposOperativos);
	}

	function view($id = null) {
		$this->sesion_activa();
		if (!$id) {
			$this->Session->setFlash(__('Invalid equipos operativo', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('equiposOperativo', $this->EquiposOperativo->read(null, $id));
	}

	function add() {
		$this->sesion_activa();
		if (!empty($this->data)) {
			$form = $this->data;
			$usuarios;
			
			if(!empty($form['EquiposOperativo']['Coordinadores'])){
				$usuarios[]=$form['EquiposOperativo']['Coordinadores'];
			}
			if(is_array($form['EquiposOperativo']['Gestores'])) {
				foreach ($form['EquiposOperativo']['Gestores'] as $usuario){
					$usuarios[]=$usuario;
				}
			}
			if(is_array($form['EquiposOperativo']['Facilitadores'])) {
				foreach ($form['EquiposOperativo']['Facilitadores'] as $usuario){
					$usuarios[]=$usuario;
				}
			}
			
			$this->EquiposOperativo->create();
			if ($this->EquiposOperativo->save($this->data)) {
				
				$id_equipo_operativo = $this->EquiposOperativo->id;			
				
				for($i=0; $i<count($usuarios); $i++){
					$grupo = $this->EquiposOperativo->User->find('list', array('fields' => array('User.group_id'),'conditions'=>array('User.id'=>$usuarios[$i])));
					//die(var_dump($grupo));
					$registro['UsersEquiposOperativo']= array('user_id'=>$usuarios[$i],'equipos_operativo_id'=>$id_equipo_operativo,'group_id'=>$grupo[$usuarios[$i]]);
					
					$this->UsersEquiposOperativo->create();
					$this->UsersEquiposOperativo->save($registro);

				}				
				$this->Session->setFlash(__('El Equipo Operativo ha sido creado', true));
				$this->redirect(array('action' => 'index'));
				
			} else {
				$this->Session->setFlash(__('El Equipo Operativo no ha sido guardado. Intente de nuevo.', true));
			}
		}
		
		//Zonas 	
		$zonas_asignadas = $this->EquiposOperativo->Zona->find('all',array('fields'=>array('Zona.id','Zona.municipio_id')));
		
//		$zonas_libres = $this->EquiposOperativo->Zona->find('list', array('fields' => array('Zona.id', 'municipio_id'), 
//													'conditions' =>  array('NOT' => array("Zona.id" => $zonas_asignadas))));
		$zonas_nuevas;
		foreach($zonas_asignadas as $zona){
			
			$mun = $this->EquiposOperativo->Zona->Municipio->find('first', array('fields' => array('Municipio.nombre'), 'conditions' => array('Municipio.id'=>$zona['Zona']['municipio_id'])));
			$zonas_nuevas[$zona['Zona']['id']] = $mun['Municipio']['nombre'];
			
		}	
		//Coordinadores asigandos a EO's
		$coordinador = $this->UsersEquiposOperativo->find('first',array('fields'=>array('user_id'),'conditions'=>array('UsersEquiposOperativo.group_id'=>'2')));
		$coordinador = $coordinador['UsersEquiposOperativo']['user_id'];
		//Coordinadores que no tienen EO
		$coordinadores = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id', 'nombre_completo'), 'conditions' =>  array('NOT' => array("User.id" => $coordinador),'User.group_id' => '2')));
		
		
		//Gestores a EO's
		$gestores_asignados = $this->UsersEquiposOperativo->find('list',array('fields'=>array('UsersEquiposOperativo.user_id'),'conditions'=>array('UsersEquiposOperativo.group_id'=>'3')));
		//Gestores que no tienen EO
		$gestores = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id', 'nombre_completo'), 'conditions' =>  array('NOT' => array("User.id" => $gestores_asignados),'User.group_id' => '3')));
		
		
		//Facilitadores a EO's
		$facilitadores_asignados = $this->UsersEquiposOperativo->find('list',array('fields'=>array('UsersEquiposOperativo.user_id'),'conditions'=>array('UsersEquiposOperativo.group_id'=>'4')));
		//Facilitadores que no tienen EO
		$facilitadores = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id', 'nombre_completo'), 'conditions' =>  array('NOT' => array("User.id" => $facilitadores_asignados),'User.group_id' => '4')));
		
					
		$this->set(compact('zonas_nuevas', 'users', 'coordinadores', 'gestores', 'facilitadores'));	
	}
	
    function edit($id = null) {
		$this->sesion_activa();
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Equipo operativo Invalido', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			$form = $this->data;
			
			$usuarios[]=$form['EquiposOperativo']['Coordinador'];
			if(is_array($form['EquiposOperativo']['Gestores'])) {
				foreach ($form['EquiposOperativo']['Gestores'] as $usuario){
					$usuarios[]=$usuario;
				}
			}
			if(is_array($form['EquiposOperativo']['Facilitadores'])) {
				foreach ($form['EquiposOperativo']['Facilitadores'] as $usuario){
					$usuarios[]=$usuario;
				}
			}
			
			//Se borran los registros de la tabla UsuariosEquiposOperativos para evitar conflictos
			$this->UsersEquiposOperativo->deleteAll(array("UsersEquiposOperativo.equipos_operativo_id"=>$id));
			//Se establece el ID para actualizar el EO.	
			$this->EquiposOperativo->id = $id;
			if ($this->EquiposOperativo->saveField("zona_id", $form['EquiposOperativo']['zona_id'])) {				
				$id_equipo_operativo = $id;			
				//Se agregan los usuarios que pertenecen al EO
				for($i=0; $i<count($usuarios); $i++){
					$grupo = $this->EquiposOperativo->User->find('list', array('fields' => array('User.group_id'),'conditions'=>array('User.id'=>$usuarios[$i])));
					$registro['UsersEquiposOperativo']= array('user_id'=>$usuarios[$i],'equipos_operativo_id'=>$id_equipo_operativo,'group_id'=>$grupo[$usuarios[$i]]);				
					$this->UsersEquiposOperativo->create();
					$this->UsersEquiposOperativo->save($registro);

				}				
				
				$this->Session->setFlash(__('Equipo operativo ha sido actualizado', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('Equipo operativo no ha sido actualizado. Intente de nuevo.', true));
			}
		}
		else {
			$this->data = $this->EquiposOperativo->read(null, $id);
		}
		
		//Zonas
		/*$zonas = $this->EquiposOperativo->Zona->find('list', array('fields' => array('Zona.id', 'Zona.municipio_id')));
		foreach($zonas as $key => $zona){
			$mun = $this->EquiposOperativo->Zona->Municipio->find('first', array('fields' => array('nombre'), 'conditions' => array('Municipio.id'=>$zona['id'])));
			$zonas[$key] = $mun['Municipio']['nombre'];
		}*/
		
       //Zonas 	
		$zonas_asignadas = $this->EquiposOperativo->Zona->find('all',array('fields'=>array('Zona.id','Zona.municipio_id')));
														
		$zonas;
		foreach($zonas_asignadas as $zona){
			
			$mun = $this->EquiposOperativo->Zona->Municipio->find('first', array('fields' => array('Municipio.nombre'), 'conditions' => array('Municipio.id'=>$zona['Zona']['municipio_id'])));
			$zonas[$zona['Zona']['id']] = $mun['Municipio']['nombre'];
			
		}		
		
		//Coordinador del Equipo
		$coordinador = $this->UsersEquiposOperativo->find('first',array('fields'=>array('user_id'),'conditions'=>array('equipos_operativo_id'=>$id, 'UsersEquiposOperativo.group_id'=>'2')));
		//Coordinadores asignados a EO's menos el propio
		$coordinadores_asignados = $this->UsersEquiposOperativo->find('list',array('fields'=>array('user_id'),'conditions'=>array('UsersEquiposOperativo.group_id'=>'2', 'NOT' => array("UsersEquiposOperativo.user_id" => $coordinador['UsersEquiposOperativo']['user_id']))));
		//Coordinadores que no tienen EO
		$coordinadores = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id', 'nombre_completo'), 'conditions' =>  array('NOT' => array("User.id" => $coordinadores_asignados),'User.group_id' => '2')));
		
		//Gestores			
		$gestores = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id','nombre_completo'),'conditions'=>array('User.group_id'=>'3')));
		$gestores_selected = $this->UsersEquiposOperativo->find('list',array('fields'=>array('user_id'),'conditions'=>array('equipos_operativo_id'=>$id, 'UsersEquiposOperativo.group_id'=>'3')));
				
		//Gestores asignados a EO's
		$gestores_asignados = $this->UsersEquiposOperativo->find('list',array('fields'=>array('UsersEquiposOperativo.user_id'),'conditions'=>array('UsersEquiposOperativo.group_id'=>'3','NOT' => array("UsersEquiposOperativo.user_id" => $gestores_selected))));
		//Gestores que no tienen EO
		$gestores = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id', 'nombre_completo'), 'conditions' =>  array('NOT' => array("User.id" => $gestores_asignados),'User.group_id' => '3')));
		
		//Facilitadores	
		$facilitadores = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id','nombre_completo'),'conditions'=>array('User.group_id'=>'4')));
		$facilitadores_selected = $this->UsersEquiposOperativo->find('list',array('fields'=>array('user_id'),'conditions'=>array('equipos_operativo_id'=>$id, 'UsersEquiposOperativo.group_id'=>'4')));
				
		//Facilitadores asignados a EO's
		$facilitadores_asignados = $this->UsersEquiposOperativo->find('list',array('fields'=>array('UsersEquiposOperativo.user_id'),'conditions'=>array('UsersEquiposOperativo.group_id'=>'4', 'NOT' => array("UsersEquiposOperativo.user_id" => $facilitadores_selected))));
		//Facilitadores que no tienen EO
		$facilitadores = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id', 'nombre_completo'), 'conditions' =>  array('NOT' => array("User.id" => $facilitadores_asignados),'User.group_id' => '4')));
		
		$this->set('zona_id',$this->data["EquiposOperativo"]["zona_id"]);
		$this->set('coordinador_id',$coordinador['UsersEquiposOperativo']['user_id']);
		$this->set(compact('zonas', 'coordinadores', 'gestores', 'facilitadores', 'gestores_selected', 'facilitadores_selected'));
		
	}

	function delete($id = null) {
		$this->sesion_activa();
		if (!$id) {
			$this->Session->setFlash(__('Invalid id for equipos operativo', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->EquiposOperativo->delete($id)) {
			$this->Session->setFlash(__('Equipos operativo deleted', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('Equipos operativo was not deleted', true));
		$this->redirect(array('action' => 'index'));
	}
}
